package com.xdcplus.web.service.pm;

import com.xdcplus.mp.service.BaseService;
import com.xdcplus.pager.vo.PageVO;
import com.xdcplus.web.common.pojo.dto.pm.PmShiftPlanGroupBindDTO;
import com.xdcplus.web.common.pojo.dto.pm.PmShiftPlanGroupDTO;
import com.xdcplus.web.common.pojo.dto.pm.PmShiftPlanGroupFilterDTO;
import com.xdcplus.web.common.pojo.entity.pm.PmShiftPlanGroup;
import com.xdcplus.web.common.pojo.vo.pm.PmShiftPlanGroupVO;

import java.util.List;


/**
 * 排班计划班组(PmShiftPlanGroup)表服务接口层
 *
 * @author Fish.Fei
 * @since 2023-05-05 15:22:36
 */
public interface PmShiftPlanGroupService extends BaseService<PmShiftPlanGroup, PmShiftPlanGroup, PmShiftPlanGroupVO> {

    /**
     * 添加排班计划班组(PmShiftPlanGroup)
     *
     * @param pmShiftPlanGroupDTO 排班计划班组(PmShiftPlanGroupDTO)
     * @return {@link Boolean} 是否成功
     */
    Boolean savePmShiftPlanGroup(PmShiftPlanGroupDTO pmShiftPlanGroupDTO);

    /**
     * 修改排班计划班组(PmShiftPlanGroup)
     *
     * @param pmShiftPlanGroupDTO 排班计划班组(PmShiftPlanGroupDTO)
     * @return {@link Boolean} 是否成功
     */
    Boolean updatePmShiftPlanGroup(PmShiftPlanGroupDTO pmShiftPlanGroupDTO);

    /**
     * 批量保存或更新排班计划班组(PmShiftPlanGroup)
     *
     * @param pmShiftPlanGroupList 排班计划班组(PmShiftPlanGroupList)
     * @return {@link Boolean} 是否成功
     */
    Boolean saveOrUpdateBatch(List<PmShiftPlanGroup> pmShiftPlanGroupList);

    /**
     * 批量保存或更新排班计划班组(PmShiftPlanGroupDTOList)
     *
     * @param pmShiftPlanGroupDTOList 排班计划班组(PmShiftPlanGroupDTOList)
     * @return {@link Boolean} 是否成功
     */
    Boolean saveOrUpdateBatchByDTOList(List<PmShiftPlanGroupDTO> pmShiftPlanGroupDTOList);

    /**
     * 删除排班计划班组(PmShiftPlanGroup)
     *
     * @param id 排班计划班组(PmShiftPlanGroup)主键
     * @return {@link Boolean} 是否成功
     */
    Boolean deletePmShiftPlanGroupLogical(Long id);
    
    Boolean deletePmShiftPlanGroupByIds(String ids);

    /**
     * 查询排班计划班组(PmShiftPlanGroup)
     *
     * @param pmShiftPlanGroupFilterDTO 过程状态过滤DTO
     * @return {@link PageVO<PmShiftPlanGroupVO>} 状态信息
     */
    List<PmShiftPlanGroupVO> queryPmShiftPlanGroupVOList(PmShiftPlanGroupFilterDTO pmShiftPlanGroupFilterDTO);

    /**
     * 查询排班计划班组(PmShiftPlanGroup)
     *
     * @param pmShiftPlanGroupFilterDTO 过程状态过滤DTO
     * @return {@link PageVO<PmShiftPlanGroupVO>} 状态信息
     */
    PageVO<PmShiftPlanGroupVO> queryPmShiftPlanGroup(PmShiftPlanGroupFilterDTO pmShiftPlanGroupFilterDTO);

    /**
     * 查询一个
     *
     * @param id 排班计划班组(PmShiftPlanGroup)主键
     * @return {@link PmShiftPlanGroupVO} 排班计划班组(PmShiftPlanGroup)信息
     */
    PmShiftPlanGroupVO queryPmShiftPlanGroupById(Long id);

    /**
     * 批量绑定排班计划班组(PmShiftPlanGroup)
     *
     * @param pmShiftPlanGroupBindDTO 排班计划班组(PmShiftPlanGroupBindDTO)
     */
    void batchBindPmShiftPlanGroup(PmShiftPlanGroupBindDTO pmShiftPlanGroupBindDTO);

    /**
     * 删除排班计划班组(PmShiftPlanGroup)
     *
     * @param shiftPlanIdFk
     */
    void deletePmShiftPlanGroupByPlanId(Long shiftPlanIdFk);
}
